1. Field of the Invention
The present invention relates to decoders which implement an approximation of the Viterbi algorithm by using analog processing techniques and, more particularly, to Viterbi decoders which temporarily store the received analog channel signals and perform path metric computations using both the stored analog signals and analog voltage signals representative of the most recently computed likelihood functions.
2. Description of the Prior Art
Convolutional coding-Viterbi decoding has attracted considerable attention, for example, in space applications where prime power is limited. Radio-frequency power savings of 4 to 5 dB are readily achieved with a decoder structure of manageable complexity. Decoding is accomplished by appropriately sampling the received process, quantizing to three-bit accuracy, and performing path metric calculations via digital electronics. At present, such digital decoding is limited to data rates of about 10 megabits/sec. using Transistor-Transistor Logic (TTL) technology or perhaps 30 megabits/sec. using Emitter-Coupled Logic (ECL). Higher data rates, consistent with the allowable bandwidth of satellite systems operating in the 4/6 or 12/14 GHz bands, can only be accommodated by multiplexing together the encoded channel symbols from a number of low data rate sources. This multiplexing can be done either in time, which would require a demultiplexer followed by a number of parallel decoders at the receiver, or in frequency, which would require a subdivision of the satellite band into several narrowband channels, each with its own transponder and decoder.
A technique for decoding convolutional codes was disclosed in the article "Error Bounds for Convolutional Codes and an Asymptotically Optimum Decoding Algorithm" by A. J. Viterbi in IEEE Transactions on Information Theory, Vol. IT-13, No. 2, pp. 260-269, Apr. 1967 which suggests an algorithm for selecting a limited number of survivor sequences in decoding a convolutional code. The articles "Convolutional Codes and Their Performance in Communication Systems" by A. J. Viterbi in IEEE Transactions on Communications Technology, Vol. COM-19, No. 5, October 1971, pp. 751-772 and "Viterbi Decoding for Satellite and Space Communication" by J. A. Heller et al. in IEEE Transactions on Communications Technology, Vol. COM-19, No. 5, October 1971 at pp. 835-848 discuss the Viterbi decoding algorithm and the general application in a decoder.
A typical prior art decoder is disclosed in U.S. Pat. No. 3,789,360 issued to G. C. Clark, Jr. et al. on Jan. 29, 1974 which relates to a decoder for correcting and decoding convolutional data. The decoder includes correlators having logic circuits which correlate newly received branches of data with all possible incremental paths representing branch transitions between states. Accumulators compute a new running correlation for every immediately previous survivor path with every possible new branch transition appended. Comparators then compare the correlation state of all paths entering that state and select the highest correlated path as the survivor path for that state. Additional comparators compare the running correlations of the survivor sequences to identify the survivor sequences having the highest correlation. Tracing apparatus then reconstructs the survivor sequences to identify the states occupied by the sequence at earlier branch intervals in order to permit logic circuits to decode each message bit of the original message.
As described in the above-mentioned references, with the Viterbi algorithm, data is not decoded as soon as it is received. Instead, a sequence of data, having a predetermined decoding depth, following the digit to be decoded is first collected. Then, by computing what are known as path metrics, a limited number of possible messages are selected, each extending throughout the decoding depth far beyond the digit presently to be decoded, with one such survivor sequence ending in each of the data states. A correlation between each survivor sequence and the data actually received is computed for the entire decoding depth under consideration. The highest correlated of the survivor sequences is then selected to be the sole survivor sequence. The earliest received digit or digits within the decoding depth is then permanently decoded under the temporary assumption that the sole survivor sequence is the correct sequence.